home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9502 / WORM.CD < prev    next >
Text File  |  1995-11-15  |  14KB  |  224 lines

  1.           @VAz Internet Worm kirándulása@N
  2.  
  3.           @VTámadás az Internet ellen@N
  4.  
  5.               Az  alábbiakban  nem  hagyományos  fertôzô betegségekrôl
  6.           lesz  szó,  de  mégis  a  vírusok  témakörébe  sorolható  az
  7.           Internet elleni támadás. 1988 november 2-án az addig  ismert
  8.           legnagyobb mértékû támadás  érte az Internetet,  a hálózatok
  9.           hálózatát.  A  támadás a  BSD  Unixnak és  leszármazottainak
  10.           néhány hibáján  alapult, ám  ezek az  apró hibák tragikusnak
  11.           bizonyultak  több  ezer,   a  hálózatra  kapcsolt   rendszer
  12.           számára.
  13.  
  14.  
  15.           @VA Féreg megjelenik@N
  16.  
  17.               Az Internet Worm (továbbiakban Féreg) jelenléte  elôször
  18.           november másodikán a kora esti órákban tûnt fel a  Hálózaton
  19.           dolgozóknak.  Azokon  a gépeken,  ahol  megjelent, rejtélyes
  20.           file-ok tûntek  fel az  átmeneti file-ok  között (/USR/TMP),
  21.           furcsa   bejegyzéseket   rögzítettek   a   naplófile-ok,  és
  22.           lecsökkent a rendszerek teljesítménye. Ezt az okozta, hogy a
  23.           fertôzött gépek  egyre növekvô  számban futtatták  a Férget,
  24.           mert a  program elsôdleges  célja a  szaporodás volt. Néhány
  25.           gépen  a  túlterhelés  teljes  rendszerleálláshoz  vezetett,
  26.           amikor  elfogyott a  szabad swap-terület  vagy a  processzek
  27.           száma meghaladta a kritikus  darabszámot. Több helyen már  a
  28.           rendszerfelügyelôk  belépése  sem  járt  sikerrel,  mivel az
  29.           erôforrások foglaltsága miatt nem jutott rájuk elegendô idô.
  30.           Az értetlenséget hamar felváltotta a Féreg elleni szervezett
  31.           fellépés. Elsôként a Berkeley Egyetemen és az MIT-n sikerült
  32.           egy-egy   példányt   ""elfogni",   noha   a   program  ennek
  33.           megakadályozására több kísérletet tett. A mûködés  részleges
  34.           megismerése  után  az  elsô  védelmi  intézkedések meglepôek
  35.           voltak: a MAIL-hez készített úgynevezett ""foltokon" (patch)
  36.           kívül a  C-fordítók átnevezése  is szükségessé  vált. Ez  az
  37.           információ azonban nem juthatott el mindenhová: több  helyen
  38.           lekapcsolták   az    összes   Internet-csatlakozást,    hogy
  39.           elszigeteljék  gépeiket  a  Hálózattól.  Rövid  idôn   belül
  40.           elkészült  a végleges  Féreg-ellenes csomag:  a Féreg  által
  41.           kiaknázott  hibák  mindegyikéhez elkészült  a  ""folt". Ezek
  42.           után már nem maradt más hátra, mint a fertôzések  egyenkénti
  43.           felszámolása.
  44.  
  45.  
  46.           @VA Worm mûködése@N
  47.  
  48.               A Féreg @Knem  vírus@N, noha több  forrás így nevezi  meg. A
  49.           vírusok  más  programokat  fertôznek  meg,  és  azok   révén
  50.           indulnak  el.  A  ""worm"  férget  jelent,  a  férgek  pedig
  51.           önmagukban  is  futóképes programok,  céljuk  a megfertôzött
  52.           rendszerek erôforrásainak minél nagyobb mértékû kihasználása
  53.           mások rovására.  A Féreg  mindent egyedül  csinált, így  egy
  54.           vírusnál  nagyobb  kár  okozására  volt  képes  (hiszen  nem
  55.           kellett megosztania  processzoridejét a  gazdaprogrammal). A
  56.           károkozás  nem  terjedt  ki  a  napjainkban   ""mindennapos"
  57.           lemezformázásra, törlésre stb., bár ezt megtehette volna. Az
  58.           is károkozás azonban,  amikor az egyes  felhasználók nevében
  59.           disznóságokat csinál valaki. Az idegen gépekre kerülés egyik
  60.           lehetôsége  a  FINGER  daemon  volt.  E  (jóindulatú) daemon
  61.           feladata  a  gép  felhasználóiról  információt  nyújtani  az
  62.           érdeklôdôknek. A Féreg kihasználta a Finger egyik hibáját: a
  63.           daemon nem ellenôrizte  saját stackjének túlcsordulását.  Az
  64.           idegen  gépekhez a  Worm olyan,  erre a  célra  szerkesztett
  65.           kérelemmel (request packet)  fordult, amely felborította  az
  66.           ottani finger belsejét,  és az a  kérés kiszolgálása után  a
  67.           Féreg  által  meghatározott   állapotba  került.  Ez   pedig
  68.           elindította  azt  a  kódot,  amely  ""áthúzta"  a  Féreg egy
  69.           példányát az  idegen gépre.  A másik  fô támadási  felület a
  70.           MAIL, a gépek közötti  levelezést kezelô daemon. Ez  a 25-ös
  71.           TCP   portot  figyeli,   mivel  innen   szedi  az   Internet
  72.           protokollok    szerinti    levélforgalmat.    Külsô   üzenet
  73.           beérkezésekor  a  daemon  kapcsolatba  lép  hívójával, ekkor
  74.           ""megtárgyalják" a levélre vonatkozó információkat. Sajnos a
  75.           BSD   Unixban   szinte  mindenhol   engedélyezték   a  DEBUG
  76.           lehetôséget a MAIL daemon számára. E lehetôség a  fejlesztés
  77.           során tesztelési feladatokat  látott el, és  rajta keresztül
  78.           olyan parancsokhoz lehetett hozzáférni, amelyeket a MAIL-nek
  79.           nem   kellett   volna    ismernie.   A   DEBUG    ajánlottan
  80.           kikapcsolandó,  ha  egy  rendszert  konfigurálnak,  ám  ez a
  81.           legtöbb  gépen  különbözô  okokból  elmaradt.  Gyakorlatilag
  82.           tehát a Féreg  a MAIL olyan  kiskapuját használta ki,  amely
  83.           nagyon  sok  helyen  elérhetô  volt,  sok  rendszerfelügyelô
  84.           számára ismeretlenül. A  Féreg támadásának harmadik  módja a
  85.           felhasználók  jelszavának feltörése  volt. Itt  a Unix  azon
  86.           sajátosságáról van szó,  hogy a felhasználói  információk (a
  87.           nevek és a kódolt jelszavak) egy mindenki számára  olvasható
  88.           helyen tárolódnak. (Kivétel ez alól a SHADOW PASSWORD,  ahol
  89.           a   kódolt   jelszó   már  nem   publikus.)   Noha   a  Unix
  90.           jelszókódolása nem  visszafordítható, a  kódolt jelszó  és a
  91.           kódolási   eljárás  ismeretében   találgatással  meg   lehet
  92.           kísérelni a  nyílt szöveg  helyreállítását. E  célra a Féreg
  93.           tartalmazott egy  olyan rutint,  amely elvégezte  a kódolást
  94.           (CRYPT), ám egy nagyságrenddel  gyorsabban, mint a BSD  Unix
  95.           saját CRYPT-je. A felhasználók jelszavára maga a Féreg a név
  96.           alapján tett kísérleteket, majd felhasználta az erre a célra
  97.           magával  hordozott  432  szavas  kisszótárt.  Ez  a   szótár
  98.           valószínûleg   a   fejlesztôk   gyûjtômunkájának  eredménye,
  99.           állítólag az akkori  viszonyok között meglepôen  jó találati
  100.           aránnyal volt  használható... A  fenti módszerek  csak akkor
  101.           mûködnek,  ha  a  felhasználói  jelszavak  valamilyen  módon
  102.           kikövetkeztethetôk a  felhasználó nyilvános  információiból.
  103.           Ez a gyakorlat tehát kerülendô. (E sorok írója például 14-15
  104.           jegyû számokat szokott jelszóként használni, egy-egy betûvel
  105.           kiegészítve.  A  szám,  a   betû  helye  és  a   betû  rövid
  106.           idôközönként változik.) A  megszerzett jelszavakkal a  Féreg
  107.           más gépekre próbált bejutni. A felhasználók lustasága  miatt
  108.           ugyanis az egyik gépen  érvényes jelszóval a többi  gépen --
  109.           ahol az adott felhasználó rendelkezik accounttal -- is lehet
  110.           próbálkozni. E  kapcsolatokat a  Féreg például  a levelezést
  111.           átirányító file-okból tudta meg.
  112.               A fertôzési kísérleteken kívül a Féreg sokoldalú  álcázó
  113.           tevékenységet  végzett.   Alapvetô  volt   például  a   futó
  114.           példányok szétágaztatása (fork),  majd a szülô  kiirtása. Az
  115.           ütemezô ugyanis csökkenti a régóta futó taszkok prioritását,
  116.           így  az  ismétlôdô  ""reinkarnáció"  törölte  az  elôéletet,
  117.           ezáltal értékes idôhöz juttatta a férget. A frissítés  másik
  118.           elônye, hogy semmilyen  processz nem halmozott  fel gyanúsan
  119.           sok elfoglalt processzoridôt,  s állandóan változott  a futó
  120.           folyamatok azonosítója -- emiatt aztán nehezebbé vált a  gép
  121.           foglaltságának  követése.   A  Féreg   processzei  egyébként
  122.           egyszerû burok (shell) folyamatok, a frissen fertôzött gépre
  123.           kerülés kivételével,  amikor rövid  ideig egy  véletlenszerû
  124.           betû-  és számsorozat  a folyamat  neve. Az  idegen  gépekre
  125.           csatlakozott Féreg egy rövid szövegfile-t küldött át,  amely
  126.           felkészítette az idegen gépet a fôprogram fogadására. Ezután
  127.           az  anya gépérôl  átkerült a  Féreg több  hardverkörnyezetbe
  128.           fordított bináris változata és a file-átvitelt végzô program
  129.           forráskódja.  Mivel  az  áthúzó  programot  az  idegen gépre
  130.           forráskóddal  juttatták  át,  elindítása  elôtt  meg kellett
  131.           hívni  a  C  fordítót.   (Ezért  járt  sikerrel  a   fordító
  132.           átnevezése  a  fertôzés megakadályozására.)  Az  átvitelt az
  133.           anya  több ponton  ellenôrizte. Miután  összeállt a  futásra
  134.           kész  Féreg  a   célgépen,  lebontotta  az   anyagép  felôli
  135.           kapcsolatait,  s  megkezdte  a  frissen  elfoglalt  rendszer
  136.           hálózati  kapcsolatainak  felderítését.  Az  így  felépített
  137.           listát véletlenszerûen permutálva az új példány megkezdte az
  138.           elérhetô   gépek  típusának   azonosítását,  kiválogatva   a
  139.           fertôzésre  alkalmasakat.  Az   elôkészítés  után  a   Féreg
  140.           megkezdte   a  jelszavak   feltörését,  ezzel   párhuzamosan
  141.           nekiállt  a  hálózati kapcsolatlista  vizsgálatának  (azaz a
  142.           fertôzésnek).
  143.  
  144.  
  145.           @VA Féreg védelme@N
  146.  
  147.               Mivel a  programot arra  készítették fel,  hogy egy  idô
  148.           után    ellenséges     környezetben    üzemeljen     (értsd:
  149.           irtóhadjáratot folytatnak ellene),  néhány olyan trükköt  is
  150.           alkalmazott,   amely   visszafejtése   és   késôbb  kiirtása
  151.           megnehezítését  szolgálta.   Nyilvánvaló  ugyanis,   hogy  a
  152.           kezdeti  idôszakban   nem  kell   számottevô  ellenlépésekre
  153.           felkészülni, a veszély felismerése után azonban  megkezdôdik
  154.           a  betolakodó  eltávolítása.  Az  elsô  szakaszban  tehát  a
  155.           feltûnés  teljes  elkerülése  a cél,  ezután  pedig  a minél
  156.           szívósabb ellenállás. A felderítés elleni védelem több módon
  157.           nyilvánult meg:  több helyen  szüneteket építettek  a kódba,
  158.           így viszonylag kis  mennyiségû Féreg jelenléte  nem terhelte
  159.           túl  a  fertôzött  rendszert.  E  trükk  a  szaporodást   is
  160.           lassította. Ugyancsak a túl gyors terjedés  megakadályozását
  161.           szolgálta  az  azonos gépen  üzemelô  Férgek kommunikációja:
  162.           véletlenszerûen  kikapcsolási  parancsokat  adtak egymásnak.
  163.           (Ez azonban úgy ment végbe, hogy legalább egy egyed  életben
  164.           maradjon   az  adott   gépen.)  Itt   szintén  a   darabszám
  165.           korlátozása volt a cél. A halálra ítélt példányok csak akkor
  166.           követtek el öngyilkosságot, ha már ""elég" sokat dolgoztak a
  167.           jelszavak feltörésén.  A Féreg  felkészült a  memória teljes
  168.           lementése (core dump) ellen  is. Elsô lépésként sok  mindent
  169.           titkosítva tárolt magában,  így a kimentett  memóriatartalom
  170.           elemzése nem volt  egyszerû. ""Normális" körülmények  között
  171.           még a core dump  kivitelezése sem sikerült. Szintén  a Féreg
  172.           védelmére  szolgált,  hogy  a  más  gépekre  áthúzó  program
  173.           mûködését folytonosan felügyelte.  A hibák kiszûrésén  kívül
  174.           gyanús    helyzetekben    azonnal    leállt    az   átvitel,
  175.           megsemmisültek  a  már  átvitt  adatok,  majd  lebomlott   a
  176.           kapcsolat.  Ezzel a  Féreg megakadályozta,  hogy egy  idegen
  177.           géprôl sikeres  kapcsolatfelvételt szimulálva  átcsalogassák
  178.           oda a teljes kódot (vagyis foglyot ejtsenek). A  sikerességi
  179.           feltételek között  szerepelt ugyanis  néhány olyan  idôzítés
  180.           is,  amit  az  idegen  gépen  várakozó  féreggyilkos   EMBER
  181.           képtelen   véghezvinni,  ha   nem  ismeri   a  Féreg   belsô
  182.           felépítését. A  felderítés fázisára  -- azaz  amikor a Féreg
  183.           túllépett  egy  bizonyos darabszámot  --  vált dominánssá  a
  184.           beleépített másik  védelmi mechanizmus.  A szaporodás  során
  185.           ugyanis   egy  rögzített   valószínûséggel  olyan   mutánsok
  186.           keletkeztek,   amelyek  nem   reagáltak  az   öngyilkosságra
  187.           felszólító parancsra. Ez ahhoz vezetett, hogy a hosszú ideje
  188.           fertôzött gépeken elszaporodtak a halhatatlan példányok.  Ez
  189.           lehetetlenné tette, hogy megtisztítsanak egy gépet egy olyan
  190.           tisztítóprocessz    elindításával,    amely    öngyilkossági
  191.           parancsokkal bombázza az ott élô férgeket.
  192.  
  193.  
  194.           @VAmi kimaradt a Féregbôl...@N
  195.           @K(jó hírek)@N
  196.  
  197.               A  Féreg  kódját  röviddel  a  fertôzések  után sikerült
  198.           helyreállítani. Ennek  elemzése során  világossá vált,  hogy
  199.           nem okozott  akkora kárt,  mint amekkorát  okozhatott volna.
  200.           Nem  próbált mások  adatai között  turkálni, nem  törölt  le
  201.           semmit,  nem  formázott winchestereket.  A  kód meglehetôsen
  202.           rossz minôségû C program; sok helyen tartalmaz halott  (soha
  203.           nem  futó)  kódot,   hibás  paraméterátadást  és   paraméter
  204.           darabszám eltérést (ez azonban két hiba találkozása miatt az
  205.           adott  Unix  alatt  fut!),  inicializálatlan  változókat  és
  206.           hibaellenôrzés nélküli rendszerhívásokat (például malloc). A
  207.           hibáknál talán fontosabb, hogy  a Féreg nem vitte  magával a
  208.           már   megfejtett   jelszavakat,   és   nem   tette    azokat
  209.           hozzáférhetôvé.  Ez  megkövetelte volna  az  összes érintett
  210.           rendszer  minden  felhasználójától,  hogy  azonnal   jelszót
  211.           váltson, amit igen nehéz lett volna kivitelezni.
  212.  
  213.  
  214.           @VTanulság@N
  215.  
  216.               A   Féreg   tündöklésének   és   bukásának    tanulságai
  217.           jelentôsek. Sok  olyan hiányosságra  hívta fel  a figyelmet,
  218.           ami más körülmények  között nagyobb katasztrófát  okozhatott
  219.           volna. A Féreg  megjelenése nyilvánvalóvá tette,  hogy semmi
  220.           sem  biztonságos, és  így hozzájárult  a felhasználói  morál
  221.           megváltoztatásához (többek szerint elônyére).
  222.  
  223.           @K-jaws-@N
  224.